﻿--[[
    @Brief    QR按钮逻辑处理
    @Author    james
    @Date    2017-05-23
--]]

TQRButton = 
{
    InitView = function(nRootID)
        TQRButton.pQRTips = ui_utility.get_ctrl_ptr_by_path(
                                nRootID, "ttQRTips");

        if nil == TQRButton.pQRTips then
            TGPLog.LogE("QRBtn", "QR Tips is nil.");
            return false;
        end;

        TQRButton.nQRBtn = ui_utility.get_ctrl_id_by_path(
                                nRootID, "btnQRLogin");

        if nil == TQRButton.nQRBtn or 0 == TQRButton.nQRBtn then
            return false;
        end;

        -- 先隐藏按钮
        -- 还是别了，推广一下
        ui_utility.show_ctrl(TQRButton.nQRBtn, true);

        ui_utility.setproperty_by_id(TQRButton.nQRBtn, "OnMouseHover", 
                                    "TQRButton.OnBtnHover");
        ui_utility.setproperty_by_id(TQRButton.nQRBtn, "OnMouseLeave", 
                                    "TQRButton.OnBtnLeave");
        ui_utility.setproperty_by_id(TQRButton.nQRBtn, "OnClick", 
                                    "TQRButton.OnClkQRBtn");
        return true;
    end;

    UnInitView = function()
        if nil ~= TQRButton.pQRTips then
            TQRButton.StopAniTmr();
            TQRButton.pQRTips:Show(FALSE);
            TQRButton.pQRTips = nil;
        end;
    end;

    -- 显示QR按钮
    ShowQRButton = function(bShow, bAni)
        if nil ~= TQRButton.nQRBtn and 0 ~= TQRButton.nQRBtn then
            if bShow then
                if 0 ~= bAni then
                    TQRButton.ShowBtnWithAni();
                else
                    ui_utility.show_ctrl(TQRButton.nQRBtn, true);
                end;
            else
                ui_utility.show_ctrl(TQRButton.nQRBtn, false);
            end;
        end;
    end;

    HideQRButton = function()
        if nil ~= TQRButton.nQRBtn then
            TQRButton.StopAniTmr();
        end;
    end;

    ShowBtnWithAni = function()
        TQRButton.nCurAph = 100;
        TQRButton.bDecAph = false;
        TQRButton.StartAniTmr();

           ui_utility.setproperty_by_id(TQRButton.nQRBtn, "Alpha", 100);
        ui_utility.show_ctrl(TQRButton.nQRBtn, true);        
    end;

    OnBtnHover = function()
        if nil ~= TQRButton.pQRTips then
            local     pTemp = ui_utility.get_ctrl_ptr_by_id(TQRButton.nQRBtn);

            if nil ~= pTemp then
                local     rtTemp = pTemp:GetRectEx(FALSE,TRUE);
                local     tTemp = POINT:new();

                tTemp.x = rtTemp.left - 46;
                tTemp.y = rtTemp.top - 42;

                -- 10673 : 二维码安全登录
                TQRButton.pQRTips:ShowAt(tTemp);

                tTemp:delete();
            end;
        end;
    end;

    OnBtnLeave = function()
        if nil ~= TQRButton.pQRTips then
            TQRButton.pQRTips:Show(FALSE);
        end;
    end;

    OnClkQRBtn = function(pUILib, nBtnID)
        local     zParam = {};

        zParam["nPageIdx"] = ELoginPage.lpQRLogin;
        comm_center.call_service("Svr_SwitchLoginPage", zParam);
    end;

    StartAniTmr = function()
        if TQRButton.bTmrFlg then
            return;
        end;

        local pTPFUI = base_utility.get_component_adapter("ITpf_ui",
                            "ierd_tgp.tpf_ui.GetTPFUI();");

        if nil ~= pTPFUI then
            pTPFUI:AddInterval("TQRButton.OnBtnAniTmr", 100, 0);
            TQRButton.bTmrFlg = true;
        else
            TGPLog.LogE("QRButton", "Add interval, TPFUI is null.");
        end;        
    end;

    StopAniTmr = function()
        if TQRButton.bTmrFlg then
            local pTPFUI = base_utility.get_component_adapter("ITpf_ui",
                                "ierd_tgp.tpf_ui.GetTPFUI();");

            if nil ~= pTPFUI then
                pTPFUI:RemoveInterval("TQRButton.OnBtnAniTmr", 0);
            else
                TGPLog.LogE("QRButton", "Add interval, TPFUI is null.");
            end;

            TQRButton.bTmrFlg = false;
        end;
    end;

    OnBtnAniTmr = function()
        if TQRButton.bDecAph then
            TQRButton.nCurAph = TQRButton.nCurAph - 30;

            if (TQRButton.nCurAph <= 100) then
                TQRButton.nCurAph = 100;
                TQRButton.bDecAph = false;
            end;
        else
            TQRButton.nCurAph = TQRButton.nCurAph + 30;

            if (TQRButton.nCurAph >= 255) then
                TQRButton.nCurAph = 255;
                TQRButton.bDecAph = true;
            end;
        end;

        if nil ~= TQRButton.nQRBtn and 0 ~= TQRButton.nQRBtn then
            ui_utility.setproperty_by_id(TQRButton.nQRBtn, "Alpha", TQRButton.nCurAph);
        end;
    end;

    pQRTips = nil;
    nQRBtn  = nil;

    nCurAph = 0;
    bDecAph = false;
    bTmrFlg = false;

};